package cn.tedu.work;

import com.rabbitmq.client.*;

import java.io.IOException;
public class WorkConsumer {
    public static void main(String[] args) throws Exception {
        //1.连接到RabbitMQ服务器
        ConnectionFactory cf = new ConnectionFactory();
        //利用连接工厂设置连接信息
        cf.setHost("192.168.8.100");
        cf.setPort(5672);//可选，5672是默认端口
        cf.setUsername("admin");
        cf.setPassword("Aq71056r");
        //2.创建连接对象（TCP）---所有的RabbitMQ服务器的客户端使用一个tcp连接对象
        Connection nc = cf.newConnection();
        //3.利用tcp连接对象创建channel（通道）
        Channel cc = nc.createChannel();
        //4.通过channel创建队列
        //第一个参数：队列名为simple.queue
        //第二个参数：队列是否持久化
        //第三个参数：队列是否独占
        //第四个参数：队列是否自动删除
        //第五个参数：其他属性的设置
        cc.queueDeclare("work.queue", false, false, false, null);
        //处理数据的回调函数
        DeliverCallback d = new DeliverCallback() {
            @Override
            public void handle(String consumerTag, Delivery message) throws IOException {
                //Delivery可以获取要消费的数据
                System.out.println(consumerTag);
                byte[] a = message.getBody();
                String s = new String(a);
                //处理消息
                System.out.println(consumerTag + "收到：" + s);
                System.out.println("-----------");
            }
        };
        //取消接收时的回调函数
        CancelCallback c = new CancelCallback() {
            @Override
            public void handle(String consumerTag) throws IOException {

            }
        };
        //第一个参数：指定队列名称
        //第二个参数：先设置为true
        //第三个参数：处理数据的回调函数
        //第四个参数：取消接收时的回调函数
        cc.basicConsume("work.queue", true, d, c);
    }
}